Repertoire de travail :

setwd("~/Desktop/analyse perfermance joueur ligue 1")
getwd()

1 - Package

library(dplyr)
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(lubridate)
## 
## Attachement du package : 'lubridate'
## Les objets suivants sont masqués depuis 'package:base':
## 
##     date, intersect, setdiff, union
library(tsoutliers)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(readxl)
library(car)
## Le chargement a nécessité le package : carData
## 
## Attachement du package : 'car'
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     recode
library(lmtest)
## Le chargement a nécessité le package : zoo
## 
## Attachement du package : 'zoo'
## Les objets suivants sont masqués depuis 'package:base':
## 
##     as.Date, as.Date.numeric
library(ggplot2)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ tibble  3.1.6     ✓ stringr 1.4.0
## ✓ readr   2.1.1     ✓ forcats 0.5.1
## ✓ purrr   0.3.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x lubridate::as.difftime() masks base::as.difftime()
## x lubridate::date()        masks base::date()
## x dplyr::filter()          masks stats::filter()
## x lubridate::intersect()   masks base::intersect()
## x dplyr::lag()             masks stats::lag()
## x car::recode()            masks dplyr::recode()
## x lubridate::setdiff()     masks base::setdiff()
## x purrr::some()            masks car::some()
## x lubridate::union()       masks base::union()
library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
library(FactoMineR)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(corrplot)
## corrplot 0.92 loaded
library(correlation)
library(normtest)
library(stringr)
library(patchwork)
library(plm)
## 
## Attachement du package : 'plm'
## Les objets suivants sont masqués depuis 'package:dplyr':
## 
##     between, lag, lead
library(lattice)
library(DataExplorer) 
library(VIM)
## Le chargement a nécessité le package : colorspace
## Le chargement a nécessité le package : grid
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
## 
## Attachement du package : 'VIM'
## L'objet suivant est masqué depuis 'package:datasets':
## 
##     sleep
library(summarytools)
## 
## Attachement du package : 'summarytools'
## L'objet suivant est masqué depuis 'package:tibble':
## 
##     view
library("funModeling")
## Le chargement a nécessité le package : Hmisc
## Le chargement a nécessité le package : survival
## Le chargement a nécessité le package : Formula
## 
## Attachement du package : 'Hmisc'
## Les objets suivants sont masqués depuis 'package:summarytools':
## 
##     label, label<-
## Les objets suivants sont masqués depuis 'package:dplyr':
## 
##     src, summarize
## Les objets suivants sont masqués depuis 'package:base':
## 
##     format.pval, units
## funModeling v.1.9.4 :)
## Examples and tutorials at livebook.datascienceheroes.com
##  / Now in Spanish: librovivodecienciadedatos.ai
## 
## Attachement du package : 'funModeling'
## L'objet suivant est masqué depuis 'package:summarytools':
## 
##     freq
library(flextable)
## 
## Attachement du package : 'flextable'
## L'objet suivant est masqué depuis 'package:purrr':
## 
##     compose
library(gtsummary)
## 
## Attachement du package : 'gtsummary'
## Les objets suivants sont masqués depuis 'package:flextable':
## 
##     as_flextable, continuous_summary
library(ClustOfVar)
library(rpart)
library(rpart.plot)
library(randomForest)
## randomForest 4.7-1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attachement du package : 'randomForest'
## L'objet suivant est masqué depuis 'package:ggplot2':
## 
##     margin
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     combine
library(lmPerm)
library(fmsb)
library(plot3D)
library(rgl)
library(plotly)
## 
## Attachement du package : 'plotly'
## Les objets suivants sont masqués depuis 'package:flextable':
## 
##     highlight, style
## L'objet suivant est masqué depuis 'package:Hmisc':
## 
##     subplot
## L'objet suivant est masqué depuis 'package:ggplot2':
## 
##     last_plot
## L'objet suivant est masqué depuis 'package:stats':
## 
##     filter
## L'objet suivant est masqué depuis 'package:graphics':
## 
##     layout
library("ggpubr")
## 
## Attachement du package : 'ggpubr'
## Les objets suivants sont masqués depuis 'package:flextable':
## 
##     border, font, rotate
library(knitr)

‘library(dplyr) library(tidyr) library(lubridate) library(tsoutliers) library(readxl) library(car) library(lmtest) library(ggplot2) library(tidyverse) library(stargazer) library(FactoMineR) library(factoextra) library(corrplot) library(correlation) library(normtest) library(stringr) library(patchwork) library(plm) library(lattice) library(DataExplorer) library(VIM) library(summarytools) library(“funModeling”) library(flextable) library(gtsummary) library(ClustOfVar) library(rpart) library(rpart.plot) library(randomForest) library(lmPerm) library(fmsb) library(plot3D) library(rgl) library(plotly) library(“ggpubr”) library(knitr)’

2- chargement des bases de donneés

tirs <- read_excel("perfomance_joueurs.xlsx", 
                                 sheet = "tirs")

prepa_tirs_buts <- read_excel("perfomance_joueurs.xlsx", 
                   sheet = "preparation tirs et buts")
## New names:
## * PassJeu -> PassJeu...5
## * PassArr -> PassArr...6
## * Drib -> Drib...7
## * Tirs -> Tirs...8
## * Ftp -> Ftp...9
## * ...
temps_jeu<- read_excel("perfomance_joueurs.xlsx", 
                              sheet = "temps de jeu")

##2-1 Fusion des bases de données

df= merge(temps_jeu,prepa_tirs_buts,by=c("Joueur","Équipe"),all.x = T)
df = merge(df,tirs,by=c("Joueur","Équipe"),all.x = T)
kable(head(df))
Joueur Équipe MJ Min Mn/MJ Min% Titulaire Mn/Débuté Compl Remp Mn/Remp RempNE PPM BT BE +/- +/-90 Sur/En dehors du terrain AMT AMT90 PassJeu…5 PassArr…6 Drib…7 Tirs…8 Ftp…9 Déf…10 AMB AMB90 PassJeu…13 PassArr…14 Drib…15 Tirs…16 Ftp…17 Déf…18 Nation Pos Âge Naissance 90 Buts Tirs TC TC% Tir/90 TC/90 B/Tir B/TC Dist CF PénM PénT
Abdel Jalil Medioub Bordeaux 9 537 60 19.9 5 88 4 4 24 16 1.33 11 15 -4 -0.67 +0.49 0 0.00 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 dz ALG DF 24-223 1997 6.0 0 3 0 0.0 0.50 0.00 0.00 NA 22.1 0 0 0
Abdou Diallo Paris S-G 12 877 73 32.5 10 86 8 2 11 10 2.50 23 9 14 +1.44 +0.35 5 0.51 5 0 0 0 0 0 1 0.10 1 0 0 0 0 0 sn SEN DF 25-339 1996 9.7 0 2 1 50.0 0.21 0.10 0.00 0.00 14.0 0 0 0
Abdoulaye Bakayoko Saint-Étienne 2 180 90 6.7 2 90 2 0 NA 1 0.00 1 3 -2 -1.00 -0.21 1 0.50 0 0 0 0 1 0 0 0.00 0 0 0 0 0 0 fr FRA DF 19-114 2002 2.0 0 0 0 NA 0.00 0.00 NA NA NA 0 0 0
Abdoulaye Bamba Angers 2 4 2 0.1 0 NA 0 2 2 13 1.50 0 0 0 0.00 +0.33 1 22.50 1 0 0 0 0 0 0 0.00 0 0 0 0 0 0 ci CIV ATDF 31-348 1990 0.0 0 0 0 NA 0.00 0.00 NA NA NA 0 0 0
Abdoulaye Sylla Nantes 1 67 67 2.5 1 67 0 0 NA 14 0.00 1 2 -1 -1.34 -1.58 0 0.00 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 gn GUI DF 21-363 2000 0.7 0 0 0 NA 0.00 0.00 NA NA NA 0 0 0
Abdu Conté Troyes 10 823 82 30.5 10 82 6 0 NA 0 1.20 7 12 -5 -0.55 -0.12 9 0.98 7 0 0 0 1 1 2 0.22 2 0 0 0 0 0 pt POR DF 24-015 1998 9.1 0 3 1 33.3 0.33 0.11 0.00 0.00 17.9 0 0 0
kable(tail(df))
Joueur Équipe MJ Min Mn/MJ Min% Titulaire Mn/Débuté Compl Remp Mn/Remp RempNE PPM BT BE +/- +/-90 Sur/En dehors du terrain AMT AMT90 PassJeu…5 PassArr…6 Drib…7 Tirs…8 Ftp…9 Déf…10 AMB AMB90 PassJeu…13 PassArr…14 Drib…15 Tirs…16 Ftp…17 Déf…18 Nation Pos Âge Naissance 90 Buts Tirs TC TC% Tir/90 TC/90 B/Tir B/TC Dist CF PénM PénT
711 Yunis Abdelhamid Reims 27 2353 87 87.1 27 87 26 0 NA 0 1.07 27 29 -2 -0.08 -0.60 15 0.57 10 0 2 1 0 2 0 0.00 0 0 0 0 0 0 ma MAR DF 34-192 1987 26.1 1 17 5 29.4 0.65 0.19 0.06 0.20 18.4 0 0 0
712 Yusuf Yazıcı Lille 15 509 34 18.9 5 71 0 10 16 3 1.33 8 13 -5 -0.88 -1.21 17 3.01 6 8 1 1 0 1 1 0.18 0 1 0 0 0 0 tr TUR MTAT 25-069 1997 5.7 1 10 5 50.0 1.77 0.88 0.10 0.20 21.4 0 0 0
713 Yvan Neyou Saint-Étienne 13 893 69 33.1 12 71 4 1 37 0 0.38 7 23 -16 -1.61 -1.21 12 1.21 10 1 1 0 0 0 0 0.00 0 0 0 0 0 0 cm CMR MT 25-095 1997 9.9 0 6 3 50.0 0.60 0.30 0.00 0.00 28.5 1 0 0
714 Yvann Macon Saint-Étienne 18 1239 69 45.9 15 79 9 3 20 1 0.94 11 24 -13 -0.94 -0.27 22 1.60 19 2 1 0 0 0 2 0.15 2 0 0 0 0 0 fr FRA DF 23-189 1998 13.8 0 11 3 27.3 0.80 0.22 0.00 0.00 27.2 0 0 0
715 Zaydou Youssouf Saint-Étienne 24 1335 56 49.4 16 69 2 8 28 4 1.00 12 27 -15 -1.01 -0.42 27 1.82 19 0 0 4 2 2 0 0.00 0 0 0 0 0 0 fr FRA MT 22-271 1999 14.8 0 18 5 27.8 1.21 0.34 0.00 0.00 27.4 0 0 0
716 Zeki Çelik Lille 24 1997 83 74.0 22 89 21 2 23 3 1.50 28 26 2 +0.09 -0.04 28 1.26 22 2 1 1 2 0 2 0.09 1 0 0 0 1 0 tr TUR DF 25-050 1997 22.2 1 17 1 5.9 0.77 0.05 0.06 1.00 20.6 0 0 0

##2-2 Renomination des variables

df= rename(df,age="Âge",
           equipe="Équipe",
           minutes_jouees_90="90",
           Mn_MJ="Mn/MJ",
           pourcentage_TC="TC%",
           Tir_90="Tir/90",
           TC_90="TC/90",
           B_Tir="B/Tir",
           Mn_Debute="Mn/Débuté",
           buts_marques_net_avec_joueur="+/-",
           buts_marques_net_avec_joueur_par_match="+/-90",
           Sur_En_dehors_du_terrain="Sur/En dehors du terrain",
           PassJeu_tirs="PassJeu...5",
           PassArr_tirs="PassArr...6",
           Drib_tirs="Drib...7",
           tirs="Tirs...8",
           Ftp_tirs="Ftp...9",
           Mn_Remp="Mn/Remp",
           pourcentage_min="Min%",
           def_tirs="Déf...10",
           passjeu_buts="PassJeu...13",
           passarr_buts="PassArr...14",
           Drib_buts="Drib...15",
           tirs_buts ="Tirs...16",
           Ftp_buts="Ftp...17",
           Def_buts="Déf...18",
           B_TC="B/TC",
           PenM="PénM",
           PenT="PénT",
           Tirs_total_par_match="Tirs",
          )

##2-3 Pour obtenir le nom des variables en minuscule

colnames(df)= str_to_lower(colnames(df))
str(df)
## 'data.frame':    716 obs. of  51 variables:
##  $ joueur                                : chr  "Abdel Jalil Medioub" "Abdou Diallo" "Abdoulaye Bakayoko" "Abdoulaye Bamba" ...
##  $ equipe                                : chr  "Bordeaux" "Paris S-G" "Saint-Étienne" "Angers" ...
##  $ mj                                    : num  9 12 2 2 1 10 15 1 24 0 ...
##  $ min                                   : num  537 877 180 4 67 ...
##  $ mn_mj                                 : num  60 73 90 2 67 82 22 6 78 NA ...
##  $ pourcentage_min                       : chr  "19.9" "32.5" "6.7" "0.1" ...
##  $ titulaire                             : num  5 10 2 0 1 10 2 0 21 0 ...
##  $ mn_debute                             : num  88 86 90 NA 67 82 79 NA 87 NA ...
##  $ compl                                 : num  4 8 2 0 0 6 1 0 17 0 ...
##  $ remp                                  : num  4 2 0 2 0 0 13 1 3 0 ...
##  $ mn_remp                               : num  24 11 NA 2 NA NA 13 6 17 NA ...
##  $ rempne                                : num  16 10 1 13 14 0 13 1 0 18 ...
##  $ ppm                                   : chr  "1.33" "2.50" "0.00" "1.50" ...
##  $ bt                                    : num  11 23 1 0 1 7 8 0 48 NA ...
##  $ be                                    : num  15 9 3 0 2 12 5 0 19 NA ...
##  $ buts_marques_net_avec_joueur          : num  -4 14 -2 0 -1 -5 3 0 29 NA ...
##  $ buts_marques_net_avec_joueur_par_match: chr  "-0.67" "+1.44" "-1.00" "0.00" ...
##  $ sur_en_dehors_du_terrain              : chr  "+0.49" "+0.35" "-0.21" "+0.33" ...
##  $ amt                                   : num  0 5 1 1 0 9 8 0 38 NA ...
##  $ amt90                                 : chr  "0.00" "0.51" "0.50" "22.50" ...
##  $ passjeu_tirs                          : num  0 5 0 1 0 7 7 0 30 NA ...
##  $ passarr_tirs                          : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ drib_tirs                             : num  0 0 0 0 0 0 1 0 6 NA ...
##  $ tirs                                  : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ ftp_tirs                              : num  0 0 1 0 0 1 0 0 0 NA ...
##  $ def_tirs                              : num  0 0 0 0 0 1 0 0 0 NA ...
##  $ amb                                   : num  0 1 0 0 0 2 1 0 7 NA ...
##  $ amb90                                 : chr  "0.00" "0.10" "0.00" "0.00" ...
##  $ passjeu_buts                          : num  0 1 0 0 0 2 1 0 6 NA ...
##  $ passarr_buts                          : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ drib_buts                             : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ tirs_buts                             : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ ftp_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ def_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ nation                                : chr  "dz ALG" "sn SEN" "fr FRA" "ci CIV" ...
##  $ pos                                   : chr  "DF" "DF" "DF" "ATDF" ...
##  $ age                                   : chr  "24-223" "25-339" "19-114" "31-348" ...
##  $ naissance                             : num  1997 1996 2002 1990 2000 ...
##  $ minutes_jouees_90                     : chr  "6.0" "9.7" "2.0" "0.0" ...
##  $ buts                                  : num  0 0 0 0 0 0 2 0 3 NA ...
##  $ tirs_total_par_match                  : num  3 2 0 0 0 3 7 0 17 NA ...
##  $ tc                                    : num  0 1 0 0 0 1 3 0 7 NA ...
##  $ pourcentage_tc                        : chr  "0.0" "50.0" NA NA ...
##  $ tir_90                                : chr  "0.50" "0.21" "0.00" "0.00" ...
##  $ tc_90                                 : chr  "0.00" "0.10" "0.00" "0.00" ...
##  $ b_tir                                 : chr  "0.00" "0.00" NA NA ...
##  $ b_tc                                  : chr  NA "0.00" NA NA ...
##  $ dist                                  : chr  "22.1" "14.0" NA NA ...
##  $ cf                                    : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ penm                                  : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ pent                                  : num  0 0 0 0 0 0 0 0 0 NA ...

##2-4 Modification de la variable age dans le bon format

age=rename(data.frame(joueur = df$joueur,equipe=df$equipe,str_split_fixed(df$age, "-", 2)),age_annee=X1,
         age_jours=X2)
age = update_columns(age, c("age_annee","age_jours"), as.numeric)
age = mutate(age,age=age_annee+(age_jours/365))
age=select(age,joueur,equipe,age)

colnames(df)
##  [1] "joueur"                                
##  [2] "equipe"                                
##  [3] "mj"                                    
##  [4] "min"                                   
##  [5] "mn_mj"                                 
##  [6] "pourcentage_min"                       
##  [7] "titulaire"                             
##  [8] "mn_debute"                             
##  [9] "compl"                                 
## [10] "remp"                                  
## [11] "mn_remp"                               
## [12] "rempne"                                
## [13] "ppm"                                   
## [14] "bt"                                    
## [15] "be"                                    
## [16] "buts_marques_net_avec_joueur"          
## [17] "buts_marques_net_avec_joueur_par_match"
## [18] "sur_en_dehors_du_terrain"              
## [19] "amt"                                   
## [20] "amt90"                                 
## [21] "passjeu_tirs"                          
## [22] "passarr_tirs"                          
## [23] "drib_tirs"                             
## [24] "tirs"                                  
## [25] "ftp_tirs"                              
## [26] "def_tirs"                              
## [27] "amb"                                   
## [28] "amb90"                                 
## [29] "passjeu_buts"                          
## [30] "passarr_buts"                          
## [31] "drib_buts"                             
## [32] "tirs_buts"                             
## [33] "ftp_buts"                              
## [34] "def_buts"                              
## [35] "nation"                                
## [36] "pos"                                   
## [37] "age"                                   
## [38] "naissance"                             
## [39] "minutes_jouees_90"                     
## [40] "buts"                                  
## [41] "tirs_total_par_match"                  
## [42] "tc"                                    
## [43] "pourcentage_tc"                        
## [44] "tir_90"                                
## [45] "tc_90"                                 
## [46] "b_tir"                                 
## [47] "b_tc"                                  
## [48] "dist"                                  
## [49] "cf"                                    
## [50] "penm"                                  
## [51] "pent"
df=df[,-37]#df sans l'ancienne variable age situé à la place 35.
df=merge(df,age,by=c('joueur','equipe'),all.x = T)#fusion de la nouvelle variable age dans le bon format
str(df)
## 'data.frame':    716 obs. of  51 variables:
##  $ joueur                                : chr  "Abdel Jalil Medioub" "Abdou Diallo" "Abdoulaye Bakayoko" "Abdoulaye Bamba" ...
##  $ equipe                                : chr  "Bordeaux" "Paris S-G" "Saint-Étienne" "Angers" ...
##  $ mj                                    : num  9 12 2 2 1 10 15 1 24 0 ...
##  $ min                                   : num  537 877 180 4 67 ...
##  $ mn_mj                                 : num  60 73 90 2 67 82 22 6 78 NA ...
##  $ pourcentage_min                       : chr  "19.9" "32.5" "6.7" "0.1" ...
##  $ titulaire                             : num  5 10 2 0 1 10 2 0 21 0 ...
##  $ mn_debute                             : num  88 86 90 NA 67 82 79 NA 87 NA ...
##  $ compl                                 : num  4 8 2 0 0 6 1 0 17 0 ...
##  $ remp                                  : num  4 2 0 2 0 0 13 1 3 0 ...
##  $ mn_remp                               : num  24 11 NA 2 NA NA 13 6 17 NA ...
##  $ rempne                                : num  16 10 1 13 14 0 13 1 0 18 ...
##  $ ppm                                   : chr  "1.33" "2.50" "0.00" "1.50" ...
##  $ bt                                    : num  11 23 1 0 1 7 8 0 48 NA ...
##  $ be                                    : num  15 9 3 0 2 12 5 0 19 NA ...
##  $ buts_marques_net_avec_joueur          : num  -4 14 -2 0 -1 -5 3 0 29 NA ...
##  $ buts_marques_net_avec_joueur_par_match: chr  "-0.67" "+1.44" "-1.00" "0.00" ...
##  $ sur_en_dehors_du_terrain              : chr  "+0.49" "+0.35" "-0.21" "+0.33" ...
##  $ amt                                   : num  0 5 1 1 0 9 8 0 38 NA ...
##  $ amt90                                 : chr  "0.00" "0.51" "0.50" "22.50" ...
##  $ passjeu_tirs                          : num  0 5 0 1 0 7 7 0 30 NA ...
##  $ passarr_tirs                          : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ drib_tirs                             : num  0 0 0 0 0 0 1 0 6 NA ...
##  $ tirs                                  : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ ftp_tirs                              : num  0 0 1 0 0 1 0 0 0 NA ...
##  $ def_tirs                              : num  0 0 0 0 0 1 0 0 0 NA ...
##  $ amb                                   : num  0 1 0 0 0 2 1 0 7 NA ...
##  $ amb90                                 : chr  "0.00" "0.10" "0.00" "0.00" ...
##  $ passjeu_buts                          : num  0 1 0 0 0 2 1 0 6 NA ...
##  $ passarr_buts                          : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ drib_buts                             : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ tirs_buts                             : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ ftp_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ def_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ nation                                : chr  "dz ALG" "sn SEN" "fr FRA" "ci CIV" ...
##  $ pos                                   : chr  "DF" "DF" "DF" "ATDF" ...
##  $ naissance                             : num  1997 1996 2002 1990 2000 ...
##  $ minutes_jouees_90                     : chr  "6.0" "9.7" "2.0" "0.0" ...
##  $ buts                                  : num  0 0 0 0 0 0 2 0 3 NA ...
##  $ tirs_total_par_match                  : num  3 2 0 0 0 3 7 0 17 NA ...
##  $ tc                                    : num  0 1 0 0 0 1 3 0 7 NA ...
##  $ pourcentage_tc                        : chr  "0.0" "50.0" NA NA ...
##  $ tir_90                                : chr  "0.50" "0.21" "0.00" "0.00" ...
##  $ tc_90                                 : chr  "0.00" "0.10" "0.00" "0.00" ...
##  $ b_tir                                 : chr  "0.00" "0.00" NA NA ...
##  $ b_tc                                  : chr  NA "0.00" NA NA ...
##  $ dist                                  : chr  "22.1" "14.0" NA NA ...
##  $ cf                                    : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ penm                                  : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ pent                                  : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ age                                   : num  24.6 25.9 19.3 32 22 ...

##2-5 Modification des classes dans le format adéquats

df = update_columns(df, c("mj","min","mn_mj","pourcentage_min","titulaire","mn_debute","compl","remp","mn_remp","rempne","ppm",
                          "bt","be","buts_marques_net_avec_joueur","buts_marques_net_avec_joueur_par_match","sur_en_dehors_du_terrain","amt90","passjeu_tirs","passarr_tirs",               
                          "drib_tirs","tirs","ftp_tirs","def_tirs","amb","amb90","passjeu_buts","passarr_buts","drib_buts",                  
                          "tirs_buts","ftp_buts","def_buts","minutes_jouees_90","buts","tirs_total_par_match","tc","pourcentage_tc",
                          "tir_90","tc_90","b_tir","b_tc","dist","cf","penm","pent","age"                   
)
                    , as.numeric)

df = update_columns(df, c("joueur","equipe","nation","pos","naissance")
                    , as.factor)
str(df)
## 'data.frame':    716 obs. of  51 variables:
##  $ joueur                                : Factor w/ 699 levels "Abdel Jalil Medioub",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ equipe                                : Factor w/ 20 levels "Angers","Bordeaux",..: 2 15 18 1 13 20 19 4 15 6 ...
##  $ mj                                    : num  9 12 2 2 1 10 15 1 24 0 ...
##  $ min                                   : num  537 877 180 4 67 ...
##  $ mn_mj                                 : num  60 73 90 2 67 82 22 6 78 NA ...
##  $ pourcentage_min                       : num  19.9 32.5 6.7 0.1 2.5 30.5 12.1 0.2 69.6 NA ...
##  $ titulaire                             : num  5 10 2 0 1 10 2 0 21 0 ...
##  $ mn_debute                             : num  88 86 90 NA 67 82 79 NA 87 NA ...
##  $ compl                                 : num  4 8 2 0 0 6 1 0 17 0 ...
##  $ remp                                  : num  4 2 0 2 0 0 13 1 3 0 ...
##  $ mn_remp                               : num  24 11 NA 2 NA NA 13 6 17 NA ...
##  $ rempne                                : num  16 10 1 13 14 0 13 1 0 18 ...
##  $ ppm                                   : num  1.33 2.5 0 1.5 0 1.2 1.27 0 2.29 NA ...
##  $ bt                                    : num  11 23 1 0 1 7 8 0 48 NA ...
##  $ be                                    : num  15 9 3 0 2 12 5 0 19 NA ...
##  $ buts_marques_net_avec_joueur          : num  -4 14 -2 0 -1 -5 3 0 29 NA ...
##  $ buts_marques_net_avec_joueur_par_match: num  -0.67 1.44 -1 0 -1.34 -0.55 0.83 0 1.39 NA ...
##  $ sur_en_dehors_du_terrain              : num  0.49 0.35 -0.21 0.33 -1.58 -0.12 0.22 0.8 0.62 NA ...
##  $ amt                                   : num  0 5 1 1 0 9 8 0 38 NA ...
##  $ amt90                                 : num  0 0.51 0.5 22.5 0 0.98 2.2 0 1.82 NA ...
##  $ passjeu_tirs                          : num  0 5 0 1 0 7 7 0 30 NA ...
##  $ passarr_tirs                          : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ drib_tirs                             : num  0 0 0 0 0 0 1 0 6 NA ...
##  $ tirs                                  : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ ftp_tirs                              : num  0 0 1 0 0 1 0 0 0 NA ...
##  $ def_tirs                              : num  0 0 0 0 0 1 0 0 0 NA ...
##  $ amb                                   : num  0 1 0 0 0 2 1 0 7 NA ...
##  $ amb90                                 : num  0 0.1 0 0 0 0.22 0.28 0 0.34 NA ...
##  $ passjeu_buts                          : num  0 1 0 0 0 2 1 0 6 NA ...
##  $ passarr_buts                          : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ drib_buts                             : num  0 0 0 0 0 0 0 0 1 NA ...
##  $ tirs_buts                             : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ ftp_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ def_buts                              : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ nation                                : Factor w/ 67 levels "ar ARG","at AUT",..: 21 56 25 13 30 50 29 25 39 NA ...
##  $ pos                                   : Factor w/ 10 levels "AT","ATDF","ATMT",..: 4 4 4 2 4 4 9 1 4 NA ...
##  $ naissance                             : Factor w/ 23 levels "1983","1984",..: 15 14 20 8 18 16 9 14 16 NA ...
##  $ minutes_jouees_90                     : num  6 9.7 2 0 0.7 9.1 3.6 0.1 20.9 NA ...
##  $ buts                                  : num  0 0 0 0 0 0 2 0 3 NA ...
##  $ tirs_total_par_match                  : num  3 2 0 0 0 3 7 0 17 NA ...
##  $ tc                                    : num  0 1 0 0 0 1 3 0 7 NA ...
##  $ pourcentage_tc                        : num  0 50 NA NA NA 33.3 42.9 NA 41.2 NA ...
##  $ tir_90                                : num  0.5 0.21 0 0 0 0.33 1.93 0 0.81 NA ...
##  $ tc_90                                 : num  0 0.1 0 0 0 0.11 0.83 0 0.34 NA ...
##  $ b_tir                                 : num  0 0 NA NA NA 0 0.29 NA 0.18 NA ...
##  $ b_tc                                  : num  NA 0 NA NA NA 0 0.67 NA 0.43 NA ...
##  $ dist                                  : num  22.1 14 NA NA NA 17.9 16.7 NA 16.3 NA ...
##  $ cf                                    : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ penm                                  : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ pent                                  : num  0 0 0 0 0 0 0 0 0 NA ...
##  $ age                                   : num  24.6 25.9 19.3 32 22 ...
##  - attr(*, ".internal.selfref")=<externalptr>

##2-6 Relocalisation des variables

Par souci de lecture, on place les variables de type factor parmis les premières variables.
Aussi, un des objectifs de l’analyse consitera plutard à considérer les buts comme la variable dépendante.Nous la placer ainsi en second de liste. La variable ‘joueur’ est en première position pour faciliter l’identification des individus.

df= relocate(df,c("nation","pos","naissance"),.before = mj)
df= relocate(df,buts,.before = equipe)
colnames(df)
##  [1] "joueur"                                
##  [2] "buts"                                  
##  [3] "equipe"                                
##  [4] "nation"                                
##  [5] "pos"                                   
##  [6] "naissance"                             
##  [7] "mj"                                    
##  [8] "min"                                   
##  [9] "mn_mj"                                 
## [10] "pourcentage_min"                       
## [11] "titulaire"                             
## [12] "mn_debute"                             
## [13] "compl"                                 
## [14] "remp"                                  
## [15] "mn_remp"                               
## [16] "rempne"                                
## [17] "ppm"                                   
## [18] "bt"                                    
## [19] "be"                                    
## [20] "buts_marques_net_avec_joueur"          
## [21] "buts_marques_net_avec_joueur_par_match"
## [22] "sur_en_dehors_du_terrain"              
## [23] "amt"                                   
## [24] "amt90"                                 
## [25] "passjeu_tirs"                          
## [26] "passarr_tirs"                          
## [27] "drib_tirs"                             
## [28] "tirs"                                  
## [29] "ftp_tirs"                              
## [30] "def_tirs"                              
## [31] "amb"                                   
## [32] "amb90"                                 
## [33] "passjeu_buts"                          
## [34] "passarr_buts"                          
## [35] "drib_buts"                             
## [36] "tirs_buts"                             
## [37] "ftp_buts"                              
## [38] "def_buts"                              
## [39] "minutes_jouees_90"                     
## [40] "tirs_total_par_match"                  
## [41] "tc"                                    
## [42] "pourcentage_tc"                        
## [43] "tir_90"                                
## [44] "tc_90"                                 
## [45] "b_tir"                                 
## [46] "b_tc"                                  
## [47] "dist"                                  
## [48] "cf"                                    
## [49] "penm"                                  
## [50] "pent"                                  
## [51] "age"

3- Analyse exploratoire de la base de donnée

L’analyse des données explicatives (EDA) est utilisée pour faire le point sur les données :

Les analyses exploratoires ont lieu immédiatement après le nettoyage des données, et juste avant les analyses descriptives, qui sont plus précises que les analyses exploratoires,et qui vont se concentrer sur certaines variables.Pour cette analyse, nous nous basersons sur les joueurs ayant marqué au moins 1 but dans la saison.

df=filter(df,buts>0)
dim(df)
## [1] 250  51

##3-1 Structure des ces données, dimensions, type de variables

introduce(df)
##   rows columns discrete_columns continuous_columns all_missing_columns
## 1  250      51                5                 46                   0
##   total_missing_values complete_rows total_observations memory_usage
## 1                   44           206              12750       170688
plot_intro(df)

##3-2 Données manquantes

plot_missing(df) 

kable(profile_missing(df))
feature num_missing pct_missing
joueur 0 0.000
buts 0 0.000
equipe 0 0.000
nation 0 0.000
pos 0 0.000
naissance 0 0.000
mj 0 0.000
min 0 0.000
mn_mj 0 0.000
pourcentage_min 0 0.000
titulaire 0 0.000
mn_debute 3 0.012
compl 0 0.000
remp 0 0.000
mn_remp 41 0.164
rempne 0 0.000
ppm 0 0.000
bt 0 0.000
be 0 0.000
buts_marques_net_avec_joueur 0 0.000
buts_marques_net_avec_joueur_par_match 0 0.000
sur_en_dehors_du_terrain 0 0.000
amt 0 0.000
amt90 0 0.000
passjeu_tirs 0 0.000
passarr_tirs 0 0.000
drib_tirs 0 0.000
tirs 0 0.000
ftp_tirs 0 0.000
def_tirs 0 0.000
amb 0 0.000
amb90 0 0.000
passjeu_buts 0 0.000
passarr_buts 0 0.000
drib_buts 0 0.000
tirs_buts 0 0.000
ftp_buts 0 0.000
def_buts 0 0.000
minutes_jouees_90 0 0.000
tirs_total_par_match 0 0.000
tc 0 0.000
pourcentage_tc 0 0.000
tir_90 0 0.000
tc_90 0 0.000
b_tir 0 0.000
b_tc 0 0.000
dist 0 0.000
cf 0 0.000
penm 0 0.000
pent 0 0.000
age 0 0.000

3-3 Distribution des variables

3-3-1 Variables qualitatives

  • ** Repartion des joueurs par caractéristique **
plot_bar(select(df,equipe,pos,nation,naissance)) 

plot_bar(select(df,equipe,pos,nation,naissance),by="pos") 

plot_bar(select(df,equipe,pos,nation,naissance),by="equipe") 

3-3-2 Variables quantitative

  • ** Histogramme **
plot_histogram(split_columns(df)$continuous)

  • ** Densité **
plot_density(split_columns(df)$continuous)

  • ** qq-plot **
plot_qq(df)
## Warning: Removed 3 rows containing non-finite values (stat_qq).
## Warning: Removed 3 rows containing non-finite values (stat_qq_line).

## Warning: Removed 41 rows containing non-finite values (stat_qq).
## Warning: Removed 41 rows containing non-finite values (stat_qq_line).

plot_qq(df, by ="pos")
## Warning: Removed 3 rows containing non-finite values (stat_qq).
## Warning: Removed 3 rows containing non-finite values (stat_qq_line).

## Warning: Removed 41 rows containing non-finite values (stat_qq).
## Warning: Removed 41 rows containing non-finite values (stat_qq_line).

plot_qq(df, by ="equipe")
## Warning: Removed 3 rows containing non-finite values (stat_qq).
## Warning: Removed 3 rows containing non-finite values (stat_qq_line).

## Warning: Removed 41 rows containing non-finite values (stat_qq).
## Warning: Removed 41 rows containing non-finite values (stat_qq_line).

plot_qq(df, by ="naissance")
## Warning: Removed 3 rows containing non-finite values (stat_qq).
## Warning: Removed 3 rows containing non-finite values (stat_qq_line).

## Warning: Removed 41 rows containing non-finite values (stat_qq).
## Warning: Removed 41 rows containing non-finite values (stat_qq_line).

plot_qq(df, by ="nation")
## Warning: Removed 3 rows containing non-finite values (stat_qq).
## Warning: Removed 3 rows containing non-finite values (stat_qq_line).

## Warning: Removed 41 rows containing non-finite values (stat_qq).
## Warning: Removed 41 rows containing non-finite values (stat_qq_line).